handleに関連付けられているデータ・ストアまたはデータベースに更新を適用します。戻り値は、更新が成功したかどうかを示します。また、更新によって、一時的な問題(デッドロックまたはタイムアウト)または永続的な問題が発生したかどうかも示します。ttXlaUpdateDesc_tレコードがトランザクション・コミットの場合、基盤となるデータ・ストア・トランザクションまたはデータベース・トランザクションがコミットされます。ttXlaApplyで他のトランザクション・コミットは実行されません。パラメータtestがtrueの場合は、レコードの更新および削除のために、更新記述内の古い値がデータ・ストアの現在の内容と比較されます。更新記述内の古い値がデータ・ストアの対応する行と一致しない場合、この関数は更新を拒否して、sb_ErrXlaTupleMismatchエラーを返します。
この関数の使用方法については、「レプリケーション・メカニズムとしてのXLAの使用」を参照してください。
注意: | 表定義が最初にログに書き込まれてから変更された場合、ttXlaApplyは使用できません。文のレベルではなく、行のレベルで一意キー制約および外部キー制約がチェックされます。 |
SQLRETURN ttXlaApply(ttXlaHandle_h handle,
ttXlaUpdateDesc_t *record,
SQLINTEGER test)
パラメータ | 型 | 説明 |
handle | ttXlaHandle_h | データ・ストアのトランザクション・ログ・ハンドル。 |
record | SQL文を生成するトランザクション。 |
|
test | SQLINTEGER | 古い値のテスト。 0 =テスト無効 1 =テスト有効 |
コールが成功すると、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
testが1で、ttXlaApplyで更新の競合が検出されると、sb_ErrXlaTupleMismatchエラーが返されます。
この例では、既存のレコードの以前の値をテストせずに、更新をデータ・ストアに適用します。
ttXlaUpdateDesc_t record;
rc = ttXlaApply(xlahandle, &record, 0);
また、install_dir/demo/xla/xlaNonPersistent.c
ファイル内のmain()関数も参照してください。
ttXlaApplyをコールすると、更新が同時トランザクションでタイムアウトまたはデッドロックする可能性があります。この場合は、アプリケーションによって、トランザクションをロールバックし、更新を再適用してください。